// 该文件负责对文件初始化操作
const sequelize = require("./dbConnect"); // 数据库连接实例
const adminModel = require("./model/adminModel"); // 数据模型
const bannerModel = require("./model/bannerModel");
const blogTypeModel = require("./model/blogTypeModule");
const blogModel = require("./model/blogModel");
const demoModel = require("./model/demoModel");
const messageModel = require("./model/messageModel");
const settingModel = require("./model/settingModel");
const aboutModel = require("./model/aboutModel");
const md5 = require("md5");


(async function () {
  // 定义模型之间的关联关系
  blogTypeModel.hasMany(blogModel, {foreignKey: 'categoryId', target: 'id'});
  blogModel.belongsTo(blogTypeModel, {foreignKey: 'categoryId', target: 'id', as: "blogtype"});

  // 博客和博客评论之间的关联关系
  blogModel.hasMany(messageModel, {foreignKey: "blogId", target: 'id'});
  messageModel.belongsTo(blogModel, {foreignKey: "blogId", target: 'id', as: "blog"});
  // 将数据模型和表进行同步
  sequelize.sync({
    alter: true,
  });

  // 同步完成之后，有一些表是需要一些初始化数据
  // 需要先查询这张表有没有内容，没有内容我们才会初始化数据
  const adminCount = await adminModel.count();
  if(!adminCount) {
    // 进入此if ，说明该表没有数据，我们进行一个初始化
    await adminModel.create({
      loginId: "admin",
      name: "超级管理员",
      loginPwd: md5("123456")
    });
    console.log("初始化管理员数据完毕");
  }

  // banner 进行初始化操作
  const bannerCount = await bannerModel.count();
  if(!bannerCount) {
    await bannerModel.bulkCreate([{
      "midImg": "/static/images/1.jpg",
      "bigImg": "/static/images/2.jpg",
      "title": "塞达尔旷野之息",
      "description": "2017年年度游戏，期待续作",
    }, {
      "midImg": "/static/images/1.jpg",
      "bigImg": "/static/images/2.jpg",
      "title": "塞达尔四英杰",
      "description": "2017年年度游戏，期待续作",
    }, {
      "midImg": "/static/images/1.jpg",
      "bigImg": "/static/images/2.jpg",
      "title": "日本街景",
      "description": "2017年年度游戏，期待续作",
    }]);
    console.log("初始化首页标语数据...")
  }

  // 全局设置数据初始化
  const settingCount = await settingModel.count();
  if(!settingCount) {
    await settingModel.create({
      avatar: '/static/images/avatar.jpg',
      siteTitle: '我的个人空间',
      github: '1541541',
      qq: "3263023350",
      qqQrCode: "465415",
      weixin: 'yh777bao',
      weixinQrCode: "4564646",
      mail: "179451097@qq.com",
      icp: '黑ICP备17001719号',
      githubName: 'See',
      favicon: '/static/images/avatar.jpg',
    });
    console.log('初始化全局设置数据....')
  }
  // 关于我数据初始化
  const aboutCount = await aboutModel.count();
  if(!aboutCount) {
    await aboutModel.create({
      url: "/static/html/about.html"
    })
    console.log("初始化关于我数据...")
  }
  console.log("数据库数据已经准备完毕...");
})();